import Toast from '@vant/weapp/toast/toast';

const now = new Date();
const minDate = new Date(1900, 0, 1).getTime();
const maxDate = new Date(2034, 11, 31).getTime();

Page({
  data: {
    avatarUrl: '', // 头像地址
    nickname: '',
    gender: '',
    birthday: '',
    region: [], // 初始化为空数组
    identity: '',
    showGender: false,
    showBirthday: false,
    showIdentity: false,
    genderColumns: ['男', '女'],
    identityColumns: ['模特', '摄影师'],
    currentDate: now.getTime(),
    minDate: minDate,
    maxDate: maxDate,
    regionValue: '', // 初始化为空字符串
  },

  onLoad() {
    // 设置 gender 和 identity 的默认值为第一项
    this.setData({
      gender: this.data.genderColumns[0],
      identity: this.data.identityColumns[0],
      regionValue: [0, 0, 0], // 默认选中第一个省、市、区
    });
  },

  // 用户选择头像后的回调
onChooseAvatar(event) {
  console.log(event);
  const { avatarUrl } = event.detail; // 获取头像临时路径
  console.log('用户选择的头像地址:', avatarUrl); // 调试日志

  // 上传头像到服务器
  this.uploadFile(avatarUrl);
},

// 上传文件到服务器
uploadFile(filePath) {
  const that = this;
  wx.showLoading({ title: '上传中...', mask: true });

  wx.uploadFile({
    url: 'http://localhost:8080/user/common/upload', // 替换为你的后端接口地址
    header: {
      token: wx.getStorageSync("userInfo").data.token, // 携带 token
    },
    filePath: filePath, // 使用传递的文件路径
    name: 'file', // 后端接口接收文件的参数名
    success(res) {
      wx.hideLoading();
      console.log(res);

      if (res.statusCode === 200) {
        const data = JSON.parse(res.data);
        console.log(data.code);

        if (data.code === 1) { // 假设 code 为 1 表示成功
          const serverFilePath = data.data; // 获取返回的文件地址
          console.log('服务器返回的头像地址:', serverFilePath);

          // 更新头像地址
          that.setData({
            avatarUrl: serverFilePath, // 保存头像地址
          });

          Toast('上传成功');
        } else {
          Toast(data.msg || '上传失败');
        }
      } else {
        Toast('上传失败');
      }
    },
    fail(err) {
      wx.hideLoading();
      Toast('上传失败');
      console.error('上传失败:', err);
    },
  });
},

  // 用户输入昵称后的回调
  onNicknameInput(event) {
    const nickname = event.detail.value;
    this.setData({
      nickname: nickname, // 更新昵称
    });
  },

  // 昵称输入框失去焦点时的回调
  onNicknameBlur(event) {
    const nickname = event.detail.value;
    if (!nickname) {
      Toast('昵称不能为空');
    }
  },

  // 性别选择器
  showGenderPopup() {
    this.setData({
      showGender: true,
    });
  },

  closeGenderPopup() {
    this.setData({
      showGender: false,
    });
  },

  onGenderChange(event) {
    const { value } = event.detail;
    this.setData({
      gender: value,
    });
  },

  onGenderConfirm(event) {
    const { value } = event.detail;
    this.setData({
      gender: value,
      showGender: false,
    });
  },

  // 生日选择器
  showBirthdayPopup() {
    this.setData({
      showBirthday: true,
    });
  },

  closeBirthdayPopup() {
    this.setData({
      showBirthday: false,
    });
  },

  onBirthdayConfirm(event) {
		const date = new Date(event.detail);
		const year = date.getFullYear();
		const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份补零
		const day = String(date.getDate()).padStart(2, '0'); // 日期补零
		const formattedDate = `${year}-${month}-${day}`; // 格式化为 yyyy-MM-dd
		this.setData({
			birthday: formattedDate,
			currentDate: event.detail,
			showBirthday: false,
		});
	},

  // 地区选择器 change 事件处理函数
  onRegionChange(event) {
    const { value } = event.detail; // 获取选中的省、市、区数组

    // 更新数据
    this.setData({
      region: value, // 更新地区数组
      regionValue: value, // 更新选中的地区数组
    },);
  },

  // 身份选择器
  showIdentityPopup() {
    this.setData({
      showIdentity: true,
    });
  },

  closeIdentityPopup() {
    this.setData({
      showIdentity: false,
    });
  },

  onIdentityChange(event) {
    const { value } = event.detail;
    this.setData({
      identity: value,
    });
  },

  onIdentityConfirm(event) {
    const { value } = event.detail;
    this.setData({
      identity: value,
      showIdentity: false,
    });
  },

  // 提交表单
  submitForm() {
    const { nickname, gender, birthday, region, identity, avatarUrl } = this.data;

    // 表单校验
    if (!avatarUrl) {
      Toast('头像不能为空');
      return;
    }
    if (!nickname) {
      Toast('昵称不能为空');
      return;
    }
    if (gender === undefined || gender === null) {
      Toast('性别不能为空');
      return;
    }
    if (!birthday) {
      Toast('生日不能为空');
      return;
    }
    if (!region || region.length !== 3) {
      Toast('地区不能为空');
      return;
    }
    if (identity === undefined || identity === null) {
      Toast('身份不能为空');
      return;
    }

    // 转换 gender 的值：男 -> 1，女 -> 0
		const genderValue = gender === '男' ? 1 : 0;
		const role = identity == '模特' ? 0 : 1;

    // 构造请求数据
    const userDTO = {
      username: nickname, // 用户名
      avatar: avatarUrl, // 头像地址
      gender: genderValue, // 性别（1: 男，0: 女）
      birthday: birthday, // 生日
      province: region[0], // 省
      city: region[1], // 市
      district: region[2], // 区
      role: role, // 身份
		};
		console.log(userDTO)

    // 发送请求
    wx.request({
      url: 'http://localhost:8080/user/user/update', // 替换为你的后端接口地址
      method: 'PUT', // 请求方法为 PUT
      header: {
        'Content-Type': 'application/json', // 请求头
        token: wx.getStorageSync('userInfo').data.token, // 携带 token
      },
      data: userDTO, // 请求数据
      success(res) {
        if (res.statusCode === 200) {
					const data = res.data;
					console.log(res)
          if (data.code === 1) {
            // 假设 code 为 1 表示成功
            Toast('修改成功');
            wx.switchTab({
							url: '/pages/mine/mine',
						})
          } else {
            Toast(data.msg || '修改失败');
          }
        } else {
          Toast('修改失败');
        }
      },
      fail(err) {
        console.error('请求失败:', err);
        Toast('请求失败');
      },
    });
  },
});